// 引入 uni-ajax 模块
import ajax from "@/uni_modules/u-ajax/js_sdk/index.js";
import errorCode from "@/utils/errorCode.js";
import store from "@/store";

export const API_BASE_URL =
  // #ifndef APP-PLUS
  import.meta.env.VITE_APP_BASE_API; // 'https://api.microa.cc'
// #endif
// #ifdef APP-PLUS
import.meta.env.VITE_APP_BASE_URL;
// #endif

// 创建请求实例
const instance = ajax.create({
  // 初始配置
  baseURL: API_BASE_URL,
  timeout: 5 * 1000,
});

// 添加请求拦截器
instance.interceptors.request.use(
  (config) => {
    const { user } = store();
    config.url = decodeURI(encodeURI(config.url).replace(/%E2%80%8B/g, "")); // 解决请求地址乱码问题
    config.header["Authorization"] = user.token;
    config.header["token"] = user.token;
    console.log(config);
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  (response) => {
    if (response.statusCode === 200) {
      const code = response.data.code || 200; // 未设置状态码则默认成功状态
      const msg = errorCode[code] || response.data.msg || errorCode["default"]; // 获取错误信息
      uni.showToast({ title: msg, icon: "none" });
      if (code === 401) {
      } else if (code !== 200) {
        return Promise.reject("error");
      } else {
        return Promise.resolve(response.data);
      }
    } else {
      return Promise.reject(errorCode[response.statusCode]);
    }
  },
  (error) => {
    // 对响应错误做些什么
    return Promise.reject(error);
  }
);

// 导出 create 创建后的实例
export default instance;
